#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
int main(int argc, const char *argv[])
{
    // 打开文件
    int fd = 0;
    if (-1 == (fd = open("demo.c", O_RDWR | O_APPEND | O_CREAT, 0666)))
    {
        perror("文件打开失败\n");
        return 0;
    }
    printf("文件打开成功,fd = %d\n",fd);

    //文件定位操作
    //>0说明向后进行偏移
    //SEEK_SET说明开头进行偏移
    off_t offset = 0;
    if((offset = lseek(fd,2,SEEK_SET)) == -1)
    {
        perror("文件定位失败\n");
        return -1;
    }
    //offset:从文件开头计算出来的结果便宜量(单位是字节)
    printf("文件定位成功,offset = %ld\n",offset);

    //读取数据
    /*char buf[1024] = {0};
    ssize_t ret_read = 0;
    if(-1 == read(fd,buf,10))
    {
        perror("读取数据失败\n");
        return -1;
    }
    printf("读取数据成功,buf = %s\n",buf);*/

    //往文件中写入数据
    //如果以追加方式打开文件的话，写入数据时，会从文件的末尾开始写入数据
    char *p = "hello world";
    //ssize_t ret_write = 0;
    if(-1 == write(fd,p,strlen(p)))
    {
        perror("写入数据失败");
        return -1;
    }
    /*if(-1 == (ret_write = write(fd,&p,strlen(p))))
    {
        perror("写入数据失败");
        return -1;
    }*/
    printf("写入数据成功");
    //printf("写入数据成功,ret_write = %ld\n",ret_write);
    //关闭文件
    close(fd);
    return 0;
}
